home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf / tracker.library / Demos / Dos-Misc.asm < prev    next >
Assembly Source File  |  1994-01-09  |  8KB  |  267 lines

  1. ;TestProgramm für "tracker.library"
  2.  
  3. ; Testet TRK_DupLockFromFH, TRK_UnLock, TRK_ExamineFH und TRK_FreeFIB.
  4. ; geht vom funktionieren von TRK_Open aus
  5.  
  6.         NOLIST
  7.         INCLUDE "exec/LVO.i"
  8.         INCLUDE "exec/memory.i"
  9.         INCLUDE "dos/LVO.i"
  10.         INCLUDE "dos/dosextens.i"
  11.         INCLUDE "tracker.i"
  12.         LIST
  13.  
  14. Print:  MACRO
  15.         move.l  Output,d1
  16.         move.l  #\1,d2
  17.         CALLDOS VFPrintf
  18.         ENDM
  19.  
  20. _TrackerBase:   EQUR a5
  21. _DosBase:       EQUR a4
  22. Output:         EQUR d7
  23.  
  24. ; WB-Message ?
  25.         sub.l   a1,a1           ;a1=0->eigener Task
  26.         CALLEXEC FindTask       ;Wo darf man denn nachschauen ?
  27.         move.l  d0,a0
  28.         tst.l   pr_CLI(a0)      ;von CLI oder WB aus gestartet ?
  29.         bne     fromCLI
  30. ;von WB aus:
  31.         lea     pr_MsgPort(a0),a0
  32.         move.l  a0,-(sp)
  33.         CALLEXEC WaitPort       ;auf Start-Message warten
  34.         move.l  (sp)+,a0
  35.         CALLEXEC GetMsg ;muß nachher beantwortet werden
  36.         move.l  d0,WBenchMsg
  37.  
  38. fromCLI:
  39. ; Tracker-Library öffnen
  40.         OPENLIB TrName
  41.         tst.l   d0
  42.         beq     ende_all
  43.         move.l  d0,_TrackerBase
  44.         TRK_OPENSTDLIB DOS,36
  45.         tst.l   d0
  46.         beq     ende_trk
  47.         move.l  d0,_DosBase
  48.  
  49.         tst.l   WBenchMsg
  50.         bne     fromWB
  51. ;von CLI aus -> Ausgaben ins CLI-Fenster
  52.         CALLDOS Output
  53.         move.l  d0,Output
  54.         bra     main
  55. ;von WB aus gestartet -> eigenes Window nötig
  56. fromWB: move.l  #WdName,d1
  57.         move.l  #MODE_OLDFILE,d2
  58.         CALLTRK TRK_Open
  59.         move.l  d0,Output
  60. ;---------------------------------------------------------------------------
  61. ;Dateipuffer anlegen
  62.  
  63. main:
  64.  
  65. ;Haupt-Testteil
  66.  
  67. LOCKVIAFH: MACRO        ;Name
  68.         move.l  #\1,d1
  69.         bsr     LockViaFH
  70.         ENDM
  71. UNLOCK: MACRO   ;Lock
  72.         move.l  \1,d1
  73.         bsr     UnLock
  74.         ENDM
  75. EXAMINEVIAFH: MACRO     ;Name
  76.         move.l  #\1,d1
  77.         bsr     ExamineViaFH
  78.         ENDM
  79. FREE:   MACRO   ;FIB
  80.         move.l  \1,d1
  81.         bsr     FreeFIB
  82.         ENDM
  83. SHORTINFO: MACRO ;FIB
  84.         move.l  \1,a0
  85.         bsr     ShortInfo
  86.         ENDM
  87.  
  88. ;Test 1: Lock zu 's:Startup-Sequence' holen, dazu FIB holen und daraus
  89. ; Länge und Dateinamen lesen.
  90.         LOCKVIAFH       Name_1
  91.         EXAMINEVIAFH    Name_1
  92.         SHORTINFO       d0
  93. ;Test 2: Lock zu 'sys:EZAsm/scrwin.s' holen, dazu FIB holen und Dateinamen
  94. ; und -Länge auslesen. Der Lock-BPTR wird vergessen.
  95.         LOCKVIAFH       Name_2
  96.         EXAMINEVIAFH    Name_2
  97.         move.l          d0,FIB_2
  98.         SHORTINFO       d0
  99. ;Test 3: Lock zu 's:MakeShell' holen, dazu FIB holen und daraus Länge und
  100. ; Dateinamen lesen.
  101. 1$:     LOCKVIAFH       Name_3
  102.         move.l          d0,Lock_3
  103.         EXAMINEVIAFH    Name_3
  104.         move.l          d0,FIB_3
  105.         SHORTINFO       d0
  106. ;FIB_2 freigeben
  107.         FREE            FIB_2
  108. ;Test 4: Lock zu 'devs:MountList' holen, dazu FIB holen und daraus Länge und
  109. ; Dateinamen lesen.
  110.         LOCKVIAFH       Name_4
  111.         move.l          d0,Lock_4
  112.         EXAMINEVIAFH    Name_4
  113.         move.l          d0,FIB_4
  114.         SHORTINFO       d0
  115. ;Lock_3 und FIB_3 freigeben
  116.         FREE            FIB_3
  117.         UNLOCK          Lock_3
  118. ;Test 5: Lock zu 'sys:inc/case.i' holen, dazu FIB holen und daraus Länge und
  119. ; Dateinamen lesen.
  120.         LOCKVIAFH       Name_5
  121.         EXAMINEVIAFH    Name_5
  122.         SHORTINFO       d0
  123. ;Lock_4 freigeben
  124.         UNLOCK          Lock_4
  125. ;---------------------------------------------------------------------------
  126.  
  127. ende_main:
  128. ;ggf. End-Botschaft und Verzögerung
  129.         tst.l   WBenchMsg
  130.         beq     ende_trk
  131.         move.l  Output,d1
  132.         move.l  #GoodBye,d2
  133.         moveq   #GoodByeLen,d3
  134.         CALLDOS Write
  135.         move.l  #150,d1
  136.         CALL    Delay
  137. ;Library schließen
  138. ende_trk:
  139.         CLOSELIB _TrackerBase
  140. ende_all:
  141.         tst.l   WBenchMsg       ;war da was ?
  142.         beq     toCLI           ;na dann halt nicht
  143. ;Message zur WB zurück
  144.         move.l  WBenchMsg,a1
  145.         CALLEXEC ReplyMsg
  146. toCLI:  moveq   #0,d0
  147.         rts
  148.  
  149. ;---------------------------------------------------------------------------
  150. ; Unterprogramm: File des Namens d1 mit Umweg über FileHandle locken
  151. ; Parameter: d1 = Namens-Zeiger
  152. ; Ergebnis: Lock-BPTR
  153.  
  154. LockViaFH:
  155.         movem.l d1/d2,-(sp)
  156.         move.l  #MODE_OLDFILE,d2
  157.         CALLTRK TRK_Open
  158.         move.l  d0,d1
  159.         bne     1$
  160. ;'Abbruch', weil TRK_Open fehlschlug:
  161.         rts
  162. 1$:     CALLTRK TRK_DupLockFromFH
  163.         move.l  d0,4(sp)
  164.         move.l  sp,d3
  165.         Print   Lock_Text
  166.         add.w   #4,sp
  167.         move.l  (sp)+,d0
  168.         rts
  169. ;---------------------------------------------------------------------------
  170. ; Unterprogramm: File namens d1 mit Umweg über FileHandle untersuchen
  171. ; Parameter: d1 = Namenszeiger
  172. ; Ergebnis: FIB-Zeiger
  173.  
  174. ExamineViaFH:
  175.         movem.l d1/d2,-(sp)
  176.         move.l  #MODE_OLDFILE,d2
  177.         CALLTRK TRK_Open
  178.         move.l  d0,d1
  179.         bne     1$
  180. ;'Abbruch', weil TRK_Open fehlschlug:
  181.         rts
  182. 1$:     CALLTRK TRK_ExamineFH
  183.         move.l  d0,4(sp)
  184.         move.l  sp,d3
  185.         Print   Examine_Text
  186.         add.w   #4,sp
  187.         move.l  (sp)+,d0
  188.         rts
  189. ;---------------------------------------------------------------------------
  190. ; Unterprogramm: Kurzinfo aus FIB generieren
  191. ; Parameter: a0 = FIB-Zeiger
  192. ; Ergebnis: -
  193.  
  194. ShortInfo:
  195.         tst.l   fib_DirEntryType(a0)
  196.         bmi     1$
  197. ;Directory:
  198.         pea     fib_FileName(a0)
  199.         move.l  sp,d3
  200.         Print   SI_Dir_Text
  201.         add.w   #4,sp
  202.         rts
  203. ;File:
  204. 1$:     move.l  fib_Size(a0),-(sp)
  205.         pea     fib_FileName(a0)
  206.         move.l  sp,d3
  207.         Print   SI_File_Text
  208.         add.w   #8,sp
  209.         rts
  210. ;---------------------------------------------------------------------------
  211. ; Unterprogramm: FIB freigeben
  212. ; Parameter: d1 = Zeiger auf den FIB
  213. ; Ergebnis: -
  214.  
  215. FreeFIB: tst.l  d1
  216.         bne     1$
  217.         rts
  218. 1$:     move.l  d1,-(sp)
  219.         CALLTRK TRK_FreeFIB
  220.         move.l  sp,d3
  221.         Print   Free_Text
  222.         add.w   #4,sp
  223.         rts
  224. ;---------------------------------------------------------------------------
  225. ; Unterprogramm: Lock freigeben
  226. ; Parameter: d1 = BPTR auf das Lock
  227. ; Ergebnis: -
  228.  
  229. UnLock: tst.l   d1
  230.         bne     1$
  231.         rts
  232. 1$:     move.l  d1,-(sp)
  233.         CALLTRK TRK_UnLock
  234.         move.l  sp,d3
  235.         Print   UnLock_Text
  236.         add.w   #4,sp
  237.         rts
  238. ;---------------------------------------------------------------------------
  239. WBenchMsg:      dc.l 0
  240.  
  241. FIB_2:          dc.l 0
  242. Lock_3:         dc.l 0
  243. FIB_3:          dc.l 0
  244. Lock_4:         dc.l 0
  245. FIB_4:          dc.l 0
  246.  
  247. TrName: TRACKERNAME
  248.  
  249. WdName:         dc.b "CON:0/0/640/200/Dos-Test für tracker.library",0
  250. GoodBye:        dc.b 10,"Bye - closing soon !"
  251. GoodByeLen:     equ *-GoodBye
  252. Name_1:         dc.b "s:Startup-Sequence",0
  253. Name_2:         dc.b "a68k:EZAsm/scrwin.s",0
  254. Name_3:         dc.b "a68k:s/MakeShell",0
  255. Name_4:         dc.b "devs:MountList",0
  256. Name_5:         dc.b "a68k:inc/case.i",0
  257. CrLf:           dc.b 10,0
  258. ReadNN:         dc.b "%ld Bytes of File with FileHandle at 4*$%06lx read : ",10,0
  259. Lock_Text:      dc.b "DupLockFromFH(Open(",34,"%s",34,",MODE_OLDFILE)) returns $%06lx",10,0
  260. UnLock_Text:    dc.b "Lock at 4*$%06lx freed",10,0
  261. Examine_Text:   dc.b "ExamineFH(Open(",34,"%s",34,",MODE_OLDFILE)) returns FIB at $%06lx",10,0
  262. Free_Text:      dc.b "FIB at $%06lx freed",10,0
  263. SI_Dir_Text:    dc.b "The examined item was the directory %s",10,0
  264. SI_File_Text:   dc.b "The examined item was the file %s. It contains %ld Bytes",10,0
  265.  
  266.         END
  267.